//问题：如何求数组的最值

var array = [54,65,43,21,12,34,45,58,97,24];

//1,字符串拼接法(利用toString和join把数组转换为字符串,再用Math的max和mix方法进行拼接,最后执行eval方法)
console.log(array.toString());//54,65,43,21,12,34,45,58,97,24
console.log(eval("Math.max("+array.toString()+")"));//<==>eval("Math.max(54,65,43,21,12,34,45,58,97,24)")
console.log(eval("Math.min(54,65,43,21,12,34,45,58,97,24)"));//<==>eval("Math.min("+array.toString()+")")
console.log(Math.min(54,65,43,21,12,34,45,58,97,24))
console.log(eval("Math.max("+array.join()+")"));//本质都是将字符串转换为可执行的代码,join():用于把数组中的所有元素放入一个字符串

//2,排序法
array.sort(
	function(a,b){
		return a-b;
	}
);
console.log("最小值Min:"+array[0]);
console.log("最大值Max:"+array[array.length-1]);

//3,Math的max和min方法(查:appli()和call())
console.log(Math.max.apply(null,array))
console.log(Math.max.apply("这里随便写",array))

//4,假设法(假设数组第一个值为最大,和后边比较,若后边的值比最大值大,则替换最大值)
var max = array[0];
var min = array[0];
for (var i = 1; i < array.length; i++) {
 	var current = array[i];
 	current>max?max=current:null;
 	current<min?min=current:null;
 } 
console.log("最大值Max："+max);

//5,使用ES6的扩展运算符
//console.log(array.Math(..array));//此方法不行

//6,join():将数组中的每个元素用指定的字符串连接起来,返回字符串(如果元素内容不是字符串,则自动转换为字符串在连接)
var arr = ['a','b','c','d'];
var str = arr.join('-');
console.log(str);//a-b-c-d

//7,访问越界数组的下标,返回undefined
var list = [1,2,4,3];
console.log(list[8]);//undefined